# -*- coding:utf-8 -*-

__author__='zhaoxp'

import numpy as np
import matplotlib.pyplot as plt
#import matplotlib.pylib  as pylib

from mpl_toolkits.mplot3d import Axes3D


'''how to use matplotlib.pyplot

ref to:
http://matplotlib.org/users/pyplot_tutorial.html


'''

def draw_chart_1():
    '''basic simple usage
    '''
    plt.plot([1,2,3,4]) # 如果这里只有一个array，那么即y轴的值，x轴的值会自动生成并且默认为[0,1,2,3,...]
    plt.ylabel('some numbers')
    plt.show()


def draw_chart_2():
    plt.plot([1,2,3,4], [1,4,8,16], 'r-')#第三个参数表示了 1：颜色 2：风格，默认'b-'，蓝色实线。
    plt.axis([0,6, 0,20])# 4个值，表示x和y轴的起始值 [xmin, xmax, ymin, ymax] 
    plt.show()


def draw_chart_3():
    '''plt.plot入的参数格式为 numpy中定义的类型，例如numpy.ndarray，如果是普通的list，则在内部转化为numpy格式
    '''
    t = np.arange(0., 5., 0.2)
    print type(t),t
    plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
    plt.show()


def draw_chart_4():
    '''三种方法来设置line属性
    1 keyword参数 plt.plot(x, y, linewidth=2)
    2 shiyong Line2D的setter方法，一般plot方法会返回Line2D实例：
        line1, line2 = plt.plot(x1, y2, x2, y3)
    3 使用setp方法，可以使用关键字参数，或者使用matlib风格的参数，例如：
        lines = plt.plot(x1, y1, x2, y2)
        关键字风格参数
        plt.setp(lines, color='r', linewidth=2.0)
        matlib风格参数
        plt.setp(lines, 'color', 'r', 'linewidth', 2.0)
    '''
    x = np.arange(0, 5, 0.2)
    print type(x), 'x =',x
    lines = plt.plot(x, x*3, x, x**2, linewidth=2.0)
    lines[0].set_antialiased(False)
    plt.setp(lines)
    plt.setp(lines, linewidth=2, color='b')
    plt.setp(lines[0], color='r')
    plt.setp(lines[1], 'color', 'b', 'linewidth', 3)
    plt.show()


def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)

def draw_chart_5():
    ''' working with multiple figures and axes
    '''
    t1 = np.arange(0.0, 5.0, 0.1)
    t2 = np.arange(0.0, 5.0, 0.02)

    plt.figure(1)
    plt.subplot(211)
    plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
    plt.subplot(212)
    plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
    plt.show()


def draw_chart_6():
    '''subplot()参数可以为一个，或者三个，如果是一个例如211，那么subplot的数量最多为9*9
    subplot(xyz),xyz分别代表 numrows，numcols，index
    可以创建多个figure
    '''
    plt.figure(1)
    plt.subplot(211)
    plt.plot([1,2,3])
    plt.subplot(2, 1, 2)
    plt.plot([4,5,6])

    plt.figure(2)
    plt.plot([4,5,6])
    plt.clf()#clear current figure

    plt.figure(1)
    plt.subplot(211)
    plt.title('Easy as 1,2,3')
    plt.show()


if __name__ == '__main__':
    #draw_chart_1()
    #draw_chart_2()
    #draw_chart_3()
    #draw_chart_4()
    #draw_chart_5()
    draw_chart_6()
